home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
EnigmA Amiga Run 1999 March
/
EnigmA AMIGA RUN 35 (1999)(G.R. Edizioni)(IT)[!][issue 1999-03].iso
/
earcd
/
devel
/
libx11
/
include
/
x11
/
xmp
/
tablep.h
< prev
next >
Wrap
C/C++ Source or Header
|
1999-01-01
|
7KB
|
200 lines
#ifndef _XmpTableP_h
#define _XmpTableP_h
#include <X11/Xmp/COPY>
/*
* SCCS_data: @(#) TableP.h 1.7 92/06/10 06:13:59
*
* XmpTable - Forms-based composite widget/geometry manager derived from
* Motif manager widgets. Class heirarchy:
* Core
* Composite
* Constraint
* XmManager
* XmBulletinBoard
* XmpTable
*
* Originally implemented by:
* David Harrison
* University of California, Berkeley
* 1989
*
* Many bug fixes and enhancements provided by
* marbru@auto-trol.com Martin Brunecky
* nazgul@alphalpha.com Kee Hinckley
* pastor@PRC.Unisys.COM Jon A. Pastor
*
* Completely re-implemented by:
* David.Smyth@SniAP.MchP.SNI.De
*/
#include <X11/Xmp/Table.h>
#include <X11/Xm/XmP.h>
#include <X11/Xm/BulletinBP.h>
/* Method definitions
**====================**
No new methods. I can't imagine how anyone is going to sub-class
THIS Widget, as the coupling between the behavior and the instance
members is rather intense!
*/
/* XmpTable Class Part: Information kept in class record
**=======================================================**
*/
typedef struct _XmpTableClassPart {
caddr_t extension;
} XmpTableClassPart;
/* Class hierarchy
**=================**
*/
typedef struct _XmpTableClassRec {
CoreClassPart core_class;
CompositeClassPart composite_class;
ConstraintClassPart constraint_class;
XmManagerClassPart manager_class;
XmBulletinBoardClassPart bulletin_class;
XmpTableClassPart table_class;
} XmpTableClassRec;
extern XmpTableClassRec xmpTableClassRec;
/* Private data types
**====================**
All of these structures are often used as elements of null terminated arrays.
*/
/* Table Location structs.
**========================**
These are used to describe each widget location, in both the
default_layout and the real_layout. In the default_layout, the
location structs contain a quark, in the real_layout they contain the
actual widget and the orig* fields are set.
*/
typedef struct _XmpTableLoc {
XrmQuark w_quark; /* Widget name quark */
Widget w; /* actual widget */
int col, row; /* Position in table */
int col_span, row_span; /* Positions spanned */
int orig_width, orig_height;/* Childs orig size */
XmpTableOpts options; /* Child layout options */
} XmpTableLocRec; /* *XmpTableLoc */
/* XmpTableLoc Methods
**=====================**
*/
extern XmpTableLoc XmpTableLocNew _(( int /*num*/ ));
extern XmpTableLoc XmpTableLocGrow _(( XmpTableLoc ));
extern XmpTableLoc XmpTableLocCopy _(( XmpTableLoc ));
extern XmpTableLoc XmpTableLocParse _(( char* /*layout*/ ));
extern XmpTableLoc XmpTableLocFind _(( XmpTableLoc, Widget /*toFind*/ ));
extern XmpTableLoc XmpTableLocFindDefault _(( XmpTableLoc, Widget /*toFind*/ ));
extern XmpTableLoc XmpTableLocFindAtPosition _((XmpTableLoc,int/*c*/,int/*r*/));
extern int XmpTableLocLen _(( XmpTableLoc ));
extern int XmpTableLocPreferredWidth _(( XmpTableLoc, int /*shrink*/ ));
extern int XmpTableLocPreferredHeight _(( XmpTableLoc, int /*shrink*/ ));
extern int XmpTableLocNumCols _(( XmpTableLoc ));
extern int XmpTableLocNumRows _(( XmpTableLoc ));
extern int XmpTableLocCompareColSpan _(( XmpTableLoc, XmpTableLoc ));
extern int XmpTableLocCompareRowSpan _(( XmpTableLoc, XmpTableLoc ));
extern void XmpTableLocFree _(( XmpTableLoc ));
/* Table Vector Structs
**======================**
A table has two of these vectors: one for columns, and one for rows.
*/
typedef int XmpTableVectorOpts;
#define TBL_VEC_MINIMIZE 0x01
#define TBL_VEC_LOCK 0x02
#define TBL_VEC_NOGROW (TBL_VEC_MINIMIZE | TBL_VEC_LOCK)
typedef struct _XmpTableVector {
XmpTableVectorOpts options; /* Apply to entire col or row */
int value; /* width of col, hieght of row */
int pref_value; /* minimum or preferred value */
int offset; /* of upper left corner of cell */
} XmpTableVectorRec, *XmpTableVector;
/* XmpTableVector Methods
**========================**
*/
#define TABLE XmpTableWidget
#define DO_COL (int)1
#define DO_ROW (int)0
extern XmpTableVector XmpTableVectorNew _(( int, TABLE, int ));
extern void XmpTableVectorFree _(( XmpTableVector ));
extern void XmpTableVectorMinimize _(( XmpTableVector, int, TABLE, int));
extern int XmpTableVectorTotalSize _(( XmpTableVector, int, TABLE, int));
extern int XmpTableVectorPreferredSize _(( XmpTableVector, int, TABLE, int));
extern void XmpTableVectorAdjust _(( XmpTableVector, int /*len*/, int /*amt*/));
extern void XmpTableVectorComputeOffsets _(( XmpTableVector, int, int, int ));
#undef TABLE
typedef enum _ResizeStatus { RSinit, RSdone, RSdueToRequest } ResizeStatus;
/* XmpTable Part: Information kept in instance record
**====================================================**
*/
typedef struct _XmpTablePart {
/* controlling members, set by SetValues or from resource database
*/
Boolean force_shrink; /* Shrink smaller than pref'd */
Boolean shrink_simple; /* Shrink simple widgets */
int col_spacing; /* Space between columns */
int row_spacing; /* Space between rows */
XmpTableOpts default_options;/* Default child layout options */
XmpTableLoc default_layout; /* Layout spec (orig from xrdb) */
/* internally computed members
*/
XmpTableLoc real_layout; /* Computed current layout */
int num_cols; /* Number of columns */
XmpTableVector cols; /* Widths and opts of each col */
int num_rows; /* Number of rows */
XmpTableVector rows; /* Heights and opts of each row */
/* State indications
*/
ResizeStatus resizeStatus; /* if Resize method invoked */
} XmpTablePart;
/* Instance hierarchy
**====================**
*/
typedef struct _XmpTableRec {
CorePart core;
CompositePart composite;
ConstraintPart constraint;
XmManagerPart manager;
XmBulletinBoardPart bulletin_board;
XmpTablePart table;
} XmpTableRec;
/* Geometry Management Support Methods
**=====================================**
*/
extern void XmpTableNewLayout _(( XmpTableWidget ));
extern void XmpTableRecomputeLayout _(( XmpTableWidget ));
extern void XmpTableResizeLayout _(( XmpTableWidget ));
extern void XmpTableNewRealLayout _(( XmpTableWidget ));
extern void XmpTableAppendToDefaultLayout _(( XmpTableWidget, XmpTableLoc ));
extern void XmpTableNewColsAndRows _(( XmpTableWidget ));
extern void XmpTableMakeColsFitWidth _(( XmpTableWidget ));
extern void XmpTableMakeRowsFitHeight _(( XmpTableWidget ));
extern int XmpTablePreferredWidth _(( XmpTableWidget ));
extern int XmpTablePreferredHeight _(( XmpTableWidget ));
extern void XmpTableRequestResize _(( XmpTableWidget ));
extern void XmpTableSetGeometryOfChildren _(( XmpTableWidget ));
#endif /* _XmpTableP_h */